BLOG main image
애플과 리눅스의 만남이 있는 곳입니다. 또한 재훈의 삶을 간간히 적는 곳입니다.

크리에이티브 커먼즈 라이선스
Creative Commons License
애플 사이트에서 주문 넣고 약 이틀만에 TNT에서 맥미니서버를 집으로 안전하게 보내주었네요.
카드 할부 12개월로 주머니 사정을 막아보고자 했는데 아무래도 수수료가 장난아니게 깨질거 같습니다.
현재 26일인데 6일간 무엇을 했는지 궁금해 하실 겁니다. ^^;

1일차 : 기본적인 구동 및 기본적인 서버 전체 체크
2일차 : 기본적인 네트워크 및 FTP 등 각종 데몬 체크
3일차 : 내부 DNS 세팅 및 웹페이지 작업 / 설정이 틀려서 1차 클린설치 시도
4일차 : 맥 미니 서버 계정 튜닝 및 기존 아이맥과 윈도우 그리고 맥북 프로와 연동 작업
5일차 : DNS 연동과 Apache 그리고 MySQL등 기본적으로 호스팅과 동일한 환경 구현
6일차 : 자체 Backup 하드(Machine HD2)를 Server HD와 함께 Raid 0로 연동 후 재설치중.
시간은 약 40분 걸리네요. 기존 Mac Mini의 경우 내장 시디롬이 있지만, 신형 맥미니 서버의 경우
시디롬이 존재하지 않아 AirBook용 시디롬을 USB로 연결 후 작업중에 있습니다.

아무래도 미친 짓을 하고 있는 것일까요? 일주일간의 고생을 통하여 앞으로 작업 환경을 편안하게 만드려는
제 생각들이....

아쉽게도 국내 애플코리아에서는 신형 맥미니서버에 관련된 도큐멘트들이 준비가 되어있지 않고, 국내 사이트들을
검색하긴 하였으나, 간간히 개인 블로그와 몇몇 포럼등에서 팁등을 얻을 수 있었습니다. 이외의 데이터들은 현재
해외에서 찾아내어 세팅 메뉴얼을 만들고 있습니다.

아마도 조만간 좋은 소식을 올리도록 하겠습니다.

맥 유져님들과 리눅스 유져님들... 그간 잠수 타서 죄송하구요. 아마도 새롭게 개편을 하게 될 것 같습니다.
기존 회사에서 퇴사한지 벌써 9개월이 넘어가는군요. 시간은 참으로 빨리 갑니다. 어떻게 시간을 보냈는지
알 수 없을 정도로...

좋은 한 주 되시기 바랍니다. ^^;

Posted by Huns [Jaehun]
크리에이티브 커먼즈 라이선스
Creative Commons License
서버를 드디어 옮기게 되었습니다. 
현재 집에 블레이드 서버 2대가 고히 모셔져있답니다. ㅠ.ㅠ
기존 사용하던 네임서버가 그간 충실이 일을 맞치고 이제 잠시 쉬고 있답니다.

새로운 IDC를 물색후 다시 입고할 예정입니다.
그 전에는 현재 사용하고 있는 티스토리에 jaehun.org를 임시방편으로 옮겨
두었습니다.

사용하시는데 무리 없도록 하기 위하여 기존의 정보도 가져왔는데 
궁금하신 사항이 있다면 이곳 코멘트나 혹은 park at jaehun.org로 메일을
주시면 확인후 처리하여 드리겠습니다. ^^;

불편하시더라도 많은 이해 부탁드립니다.

감사합니다.

저작자 표시 비영리 변경 금지

'[1] IT 관련 > 6. ETC' 카테고리의 다른 글

그간 이용못했던...  (0) 2010/02/20
IDC 전기 인하 예정  (0) 2008/09/25
Chrome의 이스터 에그 공개  (1) 2008/09/12
소프트 레이드란?  (0) 2008/09/08
Ping을 이용한 서버의 운영체제 알아내기  (0) 2008/09/08
KRNIC 아이피 할당내역  (0) 2008/09/08
Posted by Huns [Jaehun]
크리에이티브 커먼즈 라이선스
Creative Commons License
안녕하세요... 오랜만에 포스팅합니다.

Mac으로 넘어간지 벌써 어언 2개월이라는 시간이 지나갔군요. :)
맥을 쓰면서 정말 해보고 싶었던 것은 다 해본거 같습니다. 아직 iPhone이 도착을 하지 않아
포스팅을 못하는 것을 빼놓고는... ^^:

오늘의 주제는 레오파드에 있는 타임머신 입니다.

저도 백업을 못해서 항상 불안했었는데요. 이를 같은 네트워크에 있는 하드에 저장을 할 수 있다고 하여
좋은 방법이 나와있어 이렇게 포스팅합니다.

네트워크 볼륨에 Time Machine을 이용하여 설정 하는 방법은 아주 쉽습니다.

iTerm을 이용하여 터미널을 여신 뒤에 아래와 같이 설정하시면 된답니다.

defaults write com.apple.systempreferences TMShowUnsupportedNetworkVolumes 1

그리고 나서 Time Machine 볼륨을 사용할 네트워크 볼륨을 마운트 하신 후 설정하시면 깔끔히 사용이
가능하다고 하니 굳이 타임캡슐을 살 필요가 없어지는 군요. ^^;

집에서 리눅스와 맥을 사용하다보니 리눅스에서도 해당 백업이 가능하답니다. 참고 하시기 바래요. :)

PS. 언제쯤 리눅스와 맥에서 국민은행+우리은행의 인터넷뱅킹이 될까요? 항상 PDA로 인터넷 뱅킹하는 JParker였습니다.
Posted by Huns [Jaehun]
크리에이티브 커먼즈 라이선스
Creative Commons License
DarwinPorts 시스템이란 DarwinPorts 과는, FreeBSD 의 ports 과 같은 기능을 가짐과 동시에 장래의 확장성도 유지하게 만들어진, 소프트웨어의 빌드, 인스톨,및 패키지 작성을 위한 기반입니다. DarwinPorts 은 현재시점에서 MacOS X 10.2(Darwin 6.0)과 MacOS X 10.3(Darwin 7.0)위에서 작성되어, 이것들 위에서 동작합니다. 이 시스템은 TCL 과 한정된 TCL익스텐션을 이용한 C 에서 씌어져 있을 테니까, 높은 이식성이 있습니다. ” DarwinPorts User Guide”이 이하에 있습니다 :http://darwinports. opendarwin. org/docs ports 시스템의 내부구조에 대해서 보다 깊게 알기 위해서는, base/doc/INTERNALS를 참조해 주십시오. DarwinPorts 은 2개의 부분에 나뉘어져 있는 것에 주의해 주십시오. 1개는” darwin ports infrastructure”이며, 이것은 base/서브 디렉토리에 존재하는 이 시스템의 유일한 중핵부분에 맞습니다. 또 하나는” dports”디렉토리에서, 여기에는 실제로 이식된 소프트웨어의 설명등이 두어지고 있습니다. 후자는 필요에 응해서 네트워크너머에 손에 넣을 수도 있고, 눈앞에 있는 파일을 이용하는 것도 가능합니다. 후술한다 /etc/ports/sources. conf 에 관한 설명을 참조해 주십시오. 인스톨 플랫폼(platform)별의 설명은 base/doc/README. platforms 에 있습니다. 인스톨 순서: 1. cd base/. /configurebase/디렉토리에서 configure 스크립트를 실행합니다. configure 스크립트에는 몇개의 인수를 줄 수 있습니다 (후술). 2. make 모두의 필수 소프트웨어를 컴파일합니다. 3. sudo make installDarwinPorts 을 이 시스템에 인스톨합니다. 4./etc/ports/ports. conf 의 편집 [생략 가능]설정 파일이다 /etc/ports/ports. conf 에서는, DarwinPorts를 위한 몇개의 설정 항목이 정의되고 있습니다. 인스톨처의 패스나 port 시스템을 위한 여러가지 데이터가 보존되고 있는 장소를 변경하고 싶을 때는, 이하의 설정을 변경합니다 : portdbpath ports 시스템을 위한 데이터를 보존하는 장소 prefix ports 을 인스톨하는 디렉토리 [Mac OS X 10.2만] Mac OS X 10.2위의 Tcl 8.3에는, Port 이미지에 이용하고 있다 [file link]함수가 포함되어 있지 않기 위해서 , /etc/ports/ports. conf 안(속)에서 인스톨 종별을 변경 할 필요가 있습니다. 이 행을 변경해 주십시오 :변경전: portinstalltype image 변경후: portinstalltype direct 5./etc/ports/sources. conf 의 편집 [생략 가능]/etc/ports/sources. conf 에는, 네트워크상과 로컬과의 양쪽에 대해서, 소프트웨어 계층의 일람이 기술되고 있습니다. ./configure 스크립트에 --with-dports-dir=DIR 이라고 하는 인수가 주어지지 않고 있으면, 디폴트의 dports-tree ( 조금전에의 인스톨에 의해 만들어진 darwinports/dports)이 sources. conf 에 추가됩니다. 모든 필수 코드와 TCL 은 아래와같이 인스톨됩니다 : [Mac OS X 10.3]/Library/Tcl/darwinports 1.0 [Mac OS X 10.2]/System/Library/Tcl/darwinports 1.0 [FreeBSD]/usr/local/lib/tcl 8.3/darwinports 1.0- DarwinPorts 시스템을 이용하기 위한 TCL 라이브러리 PREFIX 은 표준에서는 /opt/local 이 됩니다만, base/디렉토리에서 ./configure 스크립트를 움직일 때에 --prefix 인수에서 지정하는 것으로 이것을 바꿀 수 있습니다. $PREFIX/bin/port-커맨드라인으로부터 port 을 작성하기 위한 유틸리티$PREFIX/share/darwinports/- ports 시스템 내부에서 이용하는 TCL 라이브러리 군 이하의 파일은 시스템을 주문해서 만들게 하기 위한 물건입니다 : /etc/ports/ports. conf-사용자가 port 의 설정을 바꾸기 위한 파일/etc/ports/sources. conf- port 의 소스(어디부터 ports 의 데이터를 입수할 것인가)의 일람 port 커맨드를 사용한다 최초에 /opt/local/bin ( 또는 DarwinPorts 을 인스톨한 디렉토리에 응한 $PREFIX/bin)을 【코만도사치파스】에 추가합니다. Panther (OS X 10.3)을 사용하고 있다면, ∼/. profile 에 다음 행을 추가합니다. 만약 이 파일이 존재하지 않으면 작성해 주십시오. (이 방법은 Jaguar 위에서 bourneshell 을 사용하고 있을 때에도 유효합니다. ) export PATH=$PATH:/opt/local/bin Jaguar (OS X 10.2)을 사용하고 있다면, ∼/. cshrc 에 다음 행을 추가합니다. 만약 이 파일이 존재하지 않으면 작성해 주십시오. (이 방법은 Panther 위에서 tcsh 을 사용하고 있을 때에도 유효합니다. ) set path=($path /opt/local/bin) 상기의 설정은 새로운 쉘을 기동할때 까지 유효해지지 않습니다. port 을 빌드해서 인스톨하고 싶을 때는 다음 커맨드를 사용합니다 : port install <portname> 어떤 port 을 찾고 싶을 때는” port search”을 사용합니다 : port search vi port 커맨드에 관한 완전한 설명은 온라인(on-line) 메뉴얼을 참조해 주십시오. 시스템상의 모든 port 을 빌드하거나 입수하거나 하는 것도 가능해서, 이것은 portall 커맨드를 사용합니다. 이 커맨드에는 기본적으로 port 커맨드와 같은 인수를 줄 수 있고, dports/이하에 있는 각 port 에 대하여 같은 동작을 되풀이할 수 있습니다. 예를 들면 이 디렉토리에서” make clean”을 실행하려고 하면,” portall clean”이 호출되어서 모두를 clean 에 해줍니다. 새로운 ports 을 만든다 ports 은 Portfile 과 그것에 관련되는 파일 군을 보존한 디렉토리에 의해 구성됩니다. 지금으로서는, patch 파일만이 거기에 보존되고 있어서, 게다가 이것들의 파일은 될 수 있는한 적게 끝나게 되고 있습니다. Portfile 에는, DarwinPorts 시스템에 부속되는 TCL interpreter에 의해 평가되는 TCL 코드가 포함되어 있습니다. Portfile 은, 이름과 값의 조에 의한 매우 단순한 구조를 가지고 있으므로, 작자가 필요에 응해서 TCL 의 기능을 자유(자재)로 사용할 수 있게 되고 있습니다. 우선은 base/doc/exampleport 과 portfile(7)의 온라인(on-line) 메뉴얼을 읽을 것인가,또는 http://darwinports. opendarwin. org/docs 에 있는 The DarwinPortsGuide 을 읽는 것부터 시작하면 좋지요.
Posted by Huns [Jaehun]
크리에이티브 커먼즈 라이선스
Creative Commons License

과도한 접속으로 SYN가 많이 떨어지는 경우 아래와 같은 방법으로 문제를 해결(?) 하실 수도 있답니다.

iptables -A INPUT -m recent --name badguy --rcheck --seconds 300 -j DROP
iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 30 -m recent --name badguy --set -j DROP
iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 30 -j DROP

이렇게 하게 되면 동접자의 수를 제한 할 수 있습니다. 두번재부터는 동접자의 30회 이상부터 IP를 300초동안 차단하는 것입니다.

cat /proc/net/ipt_recent/badguy로 보시면 과도한 접속자의 ip까지 체크할 수 있습니다.

사용자 삽입 이미지








Posted by Huns [Jaehun]
크리에이티브 커먼즈 라이선스
Creative Commons License


요즘들어 부쩍 공격이 늘고 있는 것을 실감할 수 있습니다.

가장 많은 수법이... 예전부터 시행되어왔던 게시판 업로드를 통한 공격이였는데

아직도 공격이 늘고 있네요. 또한, 제로보드 공격에 관련되어 설치한 유져들이 패치를 하지 않는

문제로 인하여 많은 피해를 보고 있다고 생각되어 집니다.

오늘 경찰청으로부터 다음 메일에 서버 IP가 로그인 한 흔적을 찾았다고 하기에 우연치 않게

접속을 해 본 결과 심각한 brute force login 하는 프로그램을 찾을 수 있었습니다.

이 문제는 해당 서버에 POST값을 받아 daum의 로그인 서버로 Query를 날려서 해당 아이디를

찾을 수 있게 하는 것이였는데요. 아마도 만든 사람은 한국 사람인것으로 생각되어 집니다.

IP는 중국이였구요.....

서두가 길었네요.... 게시판 업로드에 가장 큰 단점은 업로드 된 파일이 실행되어 버리면 큰 문제가

발생 될 수 있다는 점입니다. 따라서, 예전 방법으로 .htaccess를 이용하셔서 방어를 쉽게 하실 수

있답니다.

예를 들어 /home/userid/public_html/bbs/data 라는 곳이 업로드 폴더일 경우

해당 디렉토리로 가셔서 .htaccess 파일을 생성 시키고 아래와 같은 내용을 넣습니다.

AddType text/html .html .htm .php .inc .phps

이는 모든 파일들을 phps 확장자로 만들어버리는 소스입니다.

즉, PHP로 동작되는 부분들은 알아서 소스를 출력해 버리는 결과를 보여줄 것입니다.



Posted by Huns [Jaehun]
크리에이티브 커먼즈 라이선스
Creative Commons License

요즘들어 점점 하드 디스크들이 베드섹터를 가지고 늘어나는 것 같습니다.
많은 분들이 에러에 대비하여 준비하고 있다고는 하지만, 아래와 같은 명령어로
피해 가시는 분들은 많이 계시지 않는듯 하여 글을 올립니다.

배드블럭 체크
[사용법] badblock -sv [filesystem]

[root@localhost root]# badblocks -sv /dev/sda2
Checking for bad blocks in read-only mode
From block 0 to 6144862
Checking for bad blocks (read-only test): 614486080/  6144862
6144861
done                        
Pass completed, 2 bad blocks found.

배드블럭 마크
[사용법]fsck.ext3 -cvf [filesystem] <-- ext3 filesystem의 경우
: 배드블럭에 내용이 추가되는 것을 방지한다.

[root@localhost root]# fsck.ext3 -cvf /dev/sda2
e2fsck 1.32 (09-Nov-2002)
/: recovering journal
Checking for bad blocks (read-only test): done                        
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information

/: ***** FILE SYSTEM WAS MODIFIED *****
/: ***** REBOOT LINUX *****

 86973 inodes used (11%)
   597 non-contiguous inodes (0.7%)
       # of inodes with ind/dind/tind blocks: 3786/32/0
 568599 blocks used (37%)
     0 bad blocks
     0 large files

 61329 regular files
   4213 directories
   2522 character device files
 15884 block device files
     14 fifos
   4160 links
   3000 symbolic links (3000 fast symbolic links)
     2 sockets
--------
 91124 files

만일 badblocks이 한 bad block이 이미 사용되었음을 알린다면, e2fsck는 그 블럭을 다른 곳에 옮기려고 시도한다. 만일 그 블럭이 불안정한 정도가 아니라 완전히 파괴되었다면, 파일의 내용도 파괴될 것이다.

[출처 : http://phpleader.net/bbs/view.php?&bbs_id=php_07&page=8&doc_num=60 ]
Posted by Huns [Jaehun]
크리에이티브 커먼즈 라이선스
Creative Commons License

안녕하세요? Jaehun 입니다. 항상 그래왔드시 또 포스팅에 게을러짐이 존재하고 있네요.
많은 분들께서 기다리시는 것도 알고 있지만....

오늘은 한 터미널에서 멀티로 여러개의 창처럼 활용할 수 있는 명령어를 소개할 까 합니다.

저도 주로 많이 사용하고 있는데요. 터미널을 ALT+Tab으로 옮겨다니는 것도 한계가 있으므로...

최초 생성시 아래와 같이 시작 하시면 멀티 창으로 사용이 가능하십니다.

 # screen -S 세션명

위에서 세션명은 연결 종료 후 새로 접속시에도 접속 할 수 있도록 지어놓는 이름이라고 생각하시면 쉬울듯 하네요. :)

다시 #으로 오셨는지요. 아마도 현재 세션으로 동작되고 있습니다.
여기서 top(시스템툴)을 치시면 특별히 프로세서 동작중에 있을 것입니다.
이 후 아래처럼 해보시기 바랍니다.
Ctrl + a 를 누르신 뒤에 c를 눌러보시면 다시 #으로 뜨실 꺼예요.
생성 기능입니다.

또한, 이전 창으로 가고 싶을때에는 Ctrl + a를 누르신 뒤에 p를 누르시면
이전 창으로 넘어가실 수 있답니다.

또한 특별한 명령으로는 screen -ls가 있는데요. 이는 전반적인 screen 세션들이
몇개가 동작되는지 체크하고 있는 것입니다.

터미널을 종료후 다시 접속하였을 경우 해당 세션을 연결하고 싶으시다면...
# screen -r 세션명

오늘 한번 실습 해보시기 바래요~

한가지 더 알려드리자면
Screen에 연결된 상태에서 exit를 하게되거나 혹은 Ctrl + a , D 를 누르시면 종료가 된답니다.

그럼 즐거운 리눅싱 하시기를...
Posted by Huns [Jaehun]
크리에이티브 커먼즈 라이선스
Creative Commons License

HP 2133 Mini Ubuntu 8.04 설치

작성자 : JParker [ park@jaehun.org ]
작성일 : 2008. 08. 22
홈페이지 : http://www.jaehun.org
-----------------------------------------------------------------------
1. HP 2133 에 Ubuntu 8.04 LTS 설치 하기
-----------------------------------------------------------------------
HP 2133 Mini의 경우 설치를 할 수 있는 환경은 아시다 시피 열악한 것으로
알고 있습니다. 저의 경우 외장  CDROM을 이용하여  기본적으로 제공받은
Ubuntu - 8.04 (이하 하디)를 직접 넣고 설치를 시작하였습니다.

기본적으로 한국어 선택후 엔터를 누르시게 되면, 하얀 색의 화면에서 멈춘
현상이 발생 될 것입니다. 이유인 즉, Via 칩셋을 기본적으로 제공하지 않기
때문입니다.

따라서, 시디 부팅시 선택 창이 나올 때에 ESC 키를 한번 눌러주고 F6 키를
누르시면 커널 옵션 선택 부분이 나옵니다.  맨 끝 "-- " 뒤에 아래의 명령을
넣고 부팅시키시면 X를 띄운 화면을 보실 수 있을 것입니다.

"ide0=noprobe ide1=noprobe ide2=noprobe ide3=noprobe xforcevesa"

이 것은 모든 ide부분을 중지 시키고 X 모드를 Vesa로 잡는 설정입니다.

나머지 설치 방법은 기존에 나와있는 기본 설치 방법대로 설치 하시기 바랍
니다. 이 문서는 오로지 HP 2133 Mini에 Ubuntu를 설치하는 목적으로 작성
되어진 것이므로, 기타 설치에 대한 부분은 설명하지 않도록 하겠습니다.

설치가 정상적으로 진행이 된 후,  리부팅을 하시게 되면 Vesa 모드로 부팅
하게 됩니다. 따라서, Via 칩셋을  설치해야 해상도가 1280x768 모드로 변경
됩니다. 다운로드는 아래의 URL을 참고하시면 될 듯합니다.  이곳에서 선택
하셔야  할  부분은 Ubuntu 8.04 LTS -> CN896+VT8251 을 선택하시게 되면
Stable chrome9.83-242-u804 (3.8M) <- 이것을 받으시고 나서 압축을 풀고
sudo ./vinstall 명령을 통하여 설치를 하시면 Via 칩셋으로 세팅이 됩니다.

하지만, 이것으로 끝나는 것이 아니고 아래의 것을 더 설정 하셔야 합니다.

sudo gedit /usr/bin/compiz 를 실행하시고 아래의 부분을 찾아서 변경후로
바꾸어 주시기 바랍니다.

변경 전 -> WHITELIST="nvidia intel ati radeon i810 fglrx"

변경 후 -> WHITELIST="nvidia intel ati radeon i810 via"

저장 후 아래에 제공하는 xorg.conf를 다운받으셔서 /etc/X11/ 안에 넣고 X를
재시작 혹은 재부팅후 1280 x 768의 해상도를 보실 수 있습니다.

-----------------------------------------------------------------------
2. 환경 설정
-----------------------------------------------------------------------
설정이 다 완성이 되었다면 이제 인터넷 연결을 하시고 나서 업데이트를 해야 할
것입니다. sudo apt-get update;  sudo apt-get upgrade 하시면 엄청난 양의 업
데이트 해야 할 내용들이 존재 하는 것을 알 수 있습니다.  업데이트가 완료 되면


Posted by Huns [Jaehun]
크리에이티브 커먼즈 라이선스
Creative Commons License
오랜만에 또 글을 포스팅하게 되었네요. :)

몇일전 원인을 알 수 없는 윈도우 서버 공격을 받았는데요. 특이하게도 관리자 권한까지도 획득을 하는것이
놀라워서 몇가지 체크를 해보았습니다.

다행히도 현재는 주도권을 잡아온 상태이지만, 웹나이트도 무용지물이 되어버리더군요....

요즘 많이 일어나는 스크립트 삽입 관련 문제에 대하여 네이버에서 찾아보니 아래와 같이 글이 올라와 있네요.

네이버의 레오나르님의 블로그에서 퍼왔습니다. 다른 분들에게도 도움이 되었으면 좋겠네요. :)

* Script 삽입 공격을 당했는지 확인하는 쿼리
DECLARE @T varchar(255), @C varchar(255);
DECLARE Table_Cursor CURSOR FOR
SELECT a.name, b.name
FROM sysobjects a, syscolumns b
WHERE a.id = b.id AND a.xtype = 'u' AND
(b.xtype = 99 OR
b.xtype = 35 OR
b.xtype = 231 OR
b.xtype = 167);
OPEN Table_Cursor;
FETCH NEXT FROM Table_Cursor INTO @T, @C;
WHILE (@@FETCH_STATUS = 0) BEGIN

exec ('select ['+@C+'] from ['+@T+'] where ['+@C+'] like ''%<script%</script>''');
-- print 'select ['+@C+'] from ['+@T+'] where ['+@C+'] like ''%<script%</script>'''

  FETCH NEXT FROM Table_Cursor INTO @T, @C;
END;
CLOSE Table_Cursor;
DEALLOCATE Table_Cursor;

* 위의 공격을 당했을 때 복원하는 쿼리 (100% 다 되는 것은 아님 - 별도 확인 필요)
* 해킹 시 길이가 긴 경우에는 짤리고 들어가는 현상이 발생함 - 이 경우에는 복원을 해도 원상복구가 안됨
* 백업 받은 것을 복원하는 수 밖에는 없음

DECLARE @T varchar(255), @C varchar(255);
DECLARE Table_Cursor CURSOR FOR
SELECT a.name, b.name
FROM sysobjects a, syscolumns b
WHERE a.id = b.id AND a.xtype = 'u' AND
(b.xtype = 99 OR
b.xtype = 35 OR
b.xtype = 231 OR
b.xtype = 167);
OPEN Table_Cursor;
FETCH NEXT FROM Table_Cursor INTO @T, @C;
WHILE (@@FETCH_STATUS = 0) BEGIN
  EXEC(
    'update ['+@T+'] set ['+@C+'] = left(
            convert(varchar(8000), ['+@C+']),
            len(convert(varchar(8000), ['+@C+'])) - 6 -
            patindex(''%tpircs<%'',
                      reverse(convert(varchar(8000), ['+@C+'])))
            )
      where ['+@C+'] like ''%<script%</script>'''
      );
  FETCH NEXT FROM Table_Cursor INTO @T, @C;
END;
CLOSE Table_Cursor;
DEALLOCATE Table_Cursor;
-------------------------------------------------------------------------
원문 : http://blog.naver.com/hhangky/20055603259 
작성자 : 레오나르

Posted by Huns [Jaehun]
◀ PREV : [1] : [2] : [3] : [4] : [5] : ... [9] : NEXT ▶

카테고리

분류 전체보기 (115)
[1] IT 관련 (84)
OS (0)
[2] 취미 관련 (16)
[3] 기타 (15)
지식 (0)

최근에 받은 트랙백

달력

«   2010/07   »
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31